package com.ktjy.test;

import com.ktjy.mapper.Person;

import java.lang.reflect.Field;
import java.lang.reflect.Modifier;

public class GetClassFieldsInfo {
    public static void main(String[] args) {
        //获取Person中的所有属性
        //包括公共 保护 默认 私有 的属性 但是不包括继承的属性
        //如果该类或者接口不声明任何属性 或者此Class 实例表示一个基本类型
        //一个数组 或 void 则此方法返回一个长度为0的数组
        Field [] fields= Person.class.getDeclaredFields();

        //展示属性的一些信息
        System.out.println("------------属性展示-------------");
        for (Field f : fields){
            System.out.println("属性名:"+f.getName());
            System.out.println("属性类型:"+f.getType().getName());
            System.out.println("访问修饰符:");
            int modifier=f.getModifiers();
            //判断该属性的访问修饰符
            if ((modifier & Modifier.PUBLIC)== Modifier.PUBLIC){
                System.out.println("\t 访问修饰符是 :public");
            } else if ((modifier & Modifier.PROTECTED)== Modifier.PROTECTED) {
                System.out.println("\t 访问修饰符是 :protected");
            } else if ((modifier & Modifier.PRIVATE)==Modifier.PRIVATE) {
                System.out.println("\t 访问修饰符是 :private");
            }else {
                System.out.println("\t 访问修饰符是 :default");
            }
            //判断属性是否有static修饰符
            if ((modifier & Modifier.STATIC)==Modifier.STATIC){
                System.out.println("\t 属性是静态属性");
            }
            //判断属性是否有final修饰符
            if ((modifier & Modifier.FINAL)==Modifier.FINAL){
                System.out.println("\t 属性是final修饰符");
            }
            System.out.println("-------------------------");
        }
    }
}

